
uniform vec3 LightPosition; 
const float SpecularContribution = 0.3; 
const float DiffuseContribution  = 1.0 - SpecularContribution; 
varying float LightIntensity; 
varying vec2  MCposition; 

void main() 
{ 
    vec3 ecPosition = vec3(gl_ModelViewMatrix * gl_Vertex); 
    vec3 tnorm      = normalize(gl_NormalMatrix * gl_Normal); 
    vec3 lightVec   = normalize(LightPosition - ecPosition); 
    vec3 reflectVec = reflect(-lightVec, tnorm); 
    vec3 viewVec    = normalize(-ecPosition); 
    float diffuse   = max(dot(lightVec, tnorm), 0.0); 
    float spec      = 0.0; 
    if (diffuse > 0.0) 
    { 
        spec = max(dot(reflectVec, viewVec), 0.0); 
        spec = pow(spec, 16.0); 
    } 
    LightIntensity = DiffuseContribution * diffuse + 
                     SpecularContribution * spec; 
    MCposition     = gl_Vertex.xy; 
    gl_Position    = ftransform(); 
}
